package com.lightkits.wms.domain.saleticket;

import com.lightkits.common.db.entity.event.BdEvent;
import com.lightkits.common.db.entity.event.BdEventRecord;
import com.lightkits.framework.common.model.CheckResult;
import com.lightkits.wms.dto.saleticket.model.SaleTicketHeadDto;
import com.lightkits.wms.dto.saleticket.model.UpSaleTicketHeadDto;
import org.springframework.stereotype.Component;

/**
 * 售货单事件等实体类创建
 *
 * @author jing.wei@hand-china.com
 * @date 2019/5/31 6:33
 **/
@Component
public interface CreateSaleEventService {
    /**
     * 售货单创建事件的创建
     *
     * @param headDto       售货单头信息
     * @param eventTypeCode 事件类型编码
     * @return
     **/
    CheckResult<BdEvent> createEvent(SaleTicketHeadDto headDto, String eventTypeCode);

    /**
     * 售货单创建事件的创建
     *
     * @param headDto       售货单头信息
     * @param eventTypeCode 事件类型编码
     * @return
     **/
    BdEvent createEvent(UpSaleTicketHeadDto headDto, String eventTypeCode);

    /**
     * 事件快照的创建
     *
     * @param objectType     事件对象类型
     * @param keyValue       事件关键值
     * @param objectId       事件对象ID
     * @param recordType     事件记录类型
     * @param snapShotRecord 事件快照记录，JSON格式保存
     * @param eventId        事件类型
     * @return
     **/

    BdEventRecord createEventRecord(String objectType, String keyValue, Long eventId,
                                    Long objectId, String recordType, String snapShotRecord);
}
